package org.example.tools;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author weigang
 * @create 2022-08-10 16:26
 */
public class ConvertsUtils {

    public static <T,V> Map<T,V> jsonToMap(String jsonStr){
        return JSON.parseObject(
                jsonStr,
                new TypeReference<Map<T,V>>(){}
        );
    }

    public static <T,V> Map<T,List<V>> mapHeap(Map<T,List<V>> map1 , Map<T , List<V>> map2){
           return Stream.of(map1,map2)
                   .flatMap(e -> e.entrySet().stream())
                   .collect(
                           Collectors.toMap(
                                   Map.Entry::getKey,
                                   Map.Entry::getValue,
                                   (v1, v2) -> {
                                       v2.addAll(v1);
                                       return v2;
                                   }));
    }

//    public static Map<? extends String, ? extends Map> mapHeap(Map<? extends String, ? extends Map> map1 , Map<? extends String, ? extends Map> map2){
//
//        return Stream.of(map1,map2)
//                .flatMap(e -> e.entrySet().stream())
//                .collect(
//                        Collectors.toMap(
//                                Map.Entry::getKey,
//                                Map.Entry::getValue,
//                                (v1, v2) -> {
//                                    v2.putAll(v1);
//                                    return v2;
//                                }));
//    }

}
